public class code1 {

    // 二叉搜索树的最近公共祖先

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param p int整型
     * @param q int整型
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int p, int q) {
        // write code here
        int re = getCur(root, p, q);
        return re;
    }

    private static int getCur(TreeNode root, int p, int q) {
        // 通过 后序遍历 左、右、根 的形式来进行判断
        // 根据二叉搜索树的规则，判断 p、q 在树中的位置
        if(p < root.val && q < root.val) {
            return getCur(root.left, p, q);
        }
        if(p > root.val && q > root.val) {
            return getCur(root.right, p, q);
        }
        // 最后一种情况，就是当 p、q 两个值在 root 中间
        // 就不需要判断，直接返回即可
        return root.val;

    }
}
